package testes;

import static org.junit.Assert.*;

import java.util.HashSet;
import java.util.Set;

import org.bunny.businessLayer.Cartao;
import org.bunny.businessLayer.Equipa;
import org.bunny.businessLayer.Golo;
import org.bunny.businessLayer.Jogador;
import org.bunny.businessLayer.Membro;
import org.bunny.businessLayer.Participacao;
import org.junit.After;
import org.junit.AfterClass;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;

public class MembroTest {

	private Membro m1;
	
	@BeforeClass
	public static void setUpBeforeClass() throws Exception {
	}

	@AfterClass
	public static void tearDownAfterClass() throws Exception {
	}

	@Before
	public void setUp() throws Exception {
		m1 = new Membro();
	}

	@After
	public void tearDown() throws Exception {
	}

	@Test
	public void testMembro() {
		Membro a = new Membro();
		assertTrue(Membro.allInstances.contains(a));
	}

	@Test
	public void testMembroIntIntEquipaJogador() {
		Membro a = new Membro(5, 90, new Equipa(), new Jogador());
		
		Equipa b = new Equipa();
		a.setEquipa(b);
		assertSame(b, a.equipa());
		
		Jogador c = new Jogador();
		a.setJogador(c);
		assertSame(c,a.jogador());
		
		a.setMinuto_entrada(6);
		assertEquals(6,a.minuto_entrada());
		
		a.setMinuto_saida(89);
		assertEquals(89, a.minuto_saida());
		
		//TODO
		//assertEquals("Membro [minuto_entrada=" 6 ", minuto_saida=" 89 ", equipa=" + equipa + ", jogador=" + jogador + "]\n",a.toString());
	}

	

	@Test
	public void testCartoes() {
		assertEquals(new HashSet<Participacao>(), m1.cartoes());
	}

	@Test
	public void testSetCartoes() {
		Cartao a = new Cartao();
		Cartao b = new Cartao();
		
		Cartao.allInstances.add(a);
		
		Set<Cartao> result = new HashSet<Cartao>();
		result.add(b);
		m1.setCartoes(result);

		assertEquals(result,m1.cartoes());		
	}

	@Test
	public void testGolos() {
		assertEquals(new HashSet<Golo>(), m1.golos());
	}

	@Test
	public void testSetGolos() {
		Golo a = new Golo();
		Golo b = new Golo();
		
		Golo.allInstances.add(a);
		
		Set<Golo> result = new HashSet<Golo>();
		result.add(b);
		m1.setGolos(result);

		assertEquals(result,m1.golos());	
	}

	@Test
	public void testToString() {
		Equipa e = new Equipa();
		Jogador j = new Jogador();
		
			Membro m = new Membro(5, 90, e, j);

		assertEquals("Membro [minuto_entrada=" + m.minuto_entrada() + ", minuto_saida=" + m.minuto_saida() + ", equipa=" + e + ", jogador=" + j + "]\n", m.toString());
	}

}
